04. 高效分支
你已经学会了如何创建、列出和删除分支,我们来运用下所学的知识吧!
首先,确保我们保持相同的进度,并拥有相同的起始代码。我们将在
new-git-project
项目中进行操作。该项目具有以下文件:
-
index.html -
css/app.css(空文件) -
js/app.js(空文件)
CSS 和 JavaScript 文件是空的。确保 index 文件具有以下内容:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Blog Project</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<header>
<h1>Expedition</h1>
</header>
<div class="container">
<main>
</main>
</div>
<footer>
Made with ♥ @ Udacity
</footer>
<script src="js/app.js"></script>
</body>
</html>
项目设置完毕
Task Description:
在继续之前,确保我们的设置保持一致。请检查以下各项:
Task Feedback:
很棒!继续保持!
策略
现在,所有代码都位于
master
分支(默认分支)上。我们通过以下操作利用分支进行工作:
-
向分支中添加内容
-
创建新的分支
-
在分支之间切换
让我们使用分支完成以下更改:
- 在 master 分支上 - 向页面添加默认颜色
-
创建一个 sidebar 分支 - 为页面创建侧栏
-
在 master 分支上 - 更改页面的标题
-
在 sidebar 分支上 - 向侧栏中添加更多内容
-
创建一个 footer 分支 - 向脚注中添加社交链接
更改 1 - 添加页面颜色
确保位于
master
分支上,并向
css/app.css
添加以下内容:
body {
background-color: #00cae4;
}
保存文件,然后将该文件添加到暂存区,并将其 commit 到仓库。
终端显示了
git log --oneline --decorate
命令的输出结果。最近的 commit 向页面上添加了默认背景色。
更改 2 - 添加侧栏
我们向页面上添加一个侧栏。但是假定我们不确定是否喜欢新的背景色。因此我们要将 sidebar 分支放在设置页面颜色的 commit 之前。你的 SHA 可能会不一样,但对我来说,在添加颜色的 commit 之前的 commit 具有 SHA
5bfe5e7
。因此向该 commit 添加分支的命令是:
$ git branch sidebar 5bfe5e7
现在使用
git checkout
命令切换到新的
sidebar
分支。运行
git log --oneline --decorate
显示以下结果:
终端显示了
git log --oneline --decorate
的输出结果。输出结果
不
包含
master
分支 - 它消失了。
你是否注意到
master
分支没有显示在输出结果中?它去哪了?丢失了?别担心,它还在那儿,稍后我们将了解如何显示该分支。
但首先,在代码编辑器中切换到
app.css
文件。注意它没有我们之前输入的 CSS!因此,如果你在浏览器中加载该项目,页面将没有背景色。这很正常,因为 CSS 文件是空的,但是你知道为什么吗?
CSS 在哪?
SOLUTION:
内容存储在另一个分支上。Nd016 WebND Ud123 Gitcourse BETAMOJITO L5 54 不同分支上的内容
通过向 HTML 文件添加以下
<aside>
代码添加一个侧栏:
<div class="container">
<main>
</main>
</div>
<!-- start of new content -->
<aside>
<h2>About Me</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eos, debitis earum molestias veniam suscipit aliquam totam exercitationem tempore neque vitae. Minima, corporis pariatur facere at quo porro beatae similique! Odit.</p>
</aside>
<!-- end of new content -->
<footer>
Made with ♥ @ Udacity
</footer>
我将
<aside>
内容添加到
<main>
元素旁边,作为
<div class="container">
元素的子级。
你可以在
<aside>
元素中添加任何内容!
⚠️ 请勿更改 CSS
警告:千万不要更改 CSS 文件。
稍后我们将更改该文件,但是暂时请勿更改,否则会出现“合并冲突”(merge conflict)。稍后我们将手动操作出合并冲突,但是现在我们还不想有冲突,因此暂时不要更改 CSS 文件。
Task Description:
这一步已经操作完毕,可以 commit 任何更改了。
Task Feedback:
很棒! 🎉
更改 3 - 更改 master 上的标题
切换到 master 分支并更新页面标题。
使用
git checkout
命令切换到
master
分支。(注意,新的侧栏的 HTML 不在了!因为所有代码都妥善地保存在
sidebar
分支上。)
现在将页面的
<h1>
标题从"Expedition"改为其他内容。要不改为吸引人的"Adventure"?!
看到所做的更改了吗?
SOLUTION:
git diff标题更改已被保存并 commit
Task Description:
现在该保存
index.html
文件并进行 commit 以将此更改添加到仓库中。(我使用了 commit 消息"Improve site heading for SEO",但是你也可以想一个更好的消息)
Task Feedback:
很棒!
更改 4 - 向侧栏中添加更多内容
切换到
sidebar
分支(注意,我们添加到
master
分支的内容在
sidebar
分支上不可见)。
现在,在
<aside>
元素中添加一些内容。添加一些个人信息,例如你喜欢的电影或书籍(我最喜欢的是《指环王》!)。任何内容都可以,只需添加一些内容。
同样确保不要更改 CSS 文件。
保存
index.html
文件并提交 commit。
更改 5 - 向脚注中添加社交链接
我们已经做出了好几个更改,下面要进行最后一项更改了。我们向页面脚注中添加一些社交图标。为了加以区分,我们在基于
master
分支的新 footer 分支上做出这一更改,因此需要先创建一个新的
footer
分支。
💡 用一个命令切换并创建分支💡
目前,我们处理分支的方式是使用
git branch命令创建一个分支,然后使用git checkout命令切换到这个新建的分支。
但是你知道吗?
git checkout命令也可以创建一个新的分支。如果你添加-b选项,则能够用一个命令创建分支并切换到该分支。
$ git checkout -b richards-branch-for-awesome-changes
这是一个很实用的命令,我经常会用到它。
我们使用新的
git checkout
命令来创建新的
footer
分支并让此 footer 分支的起点位置与 master 分支的一样:
$ git checkout -b footer master
现在如果运行
git log --oneline --decorate
,应该能看到以下结果(你的 commit 消息可能不一样):
终端显示了
git log --oneline --decorate
的输出结果。特殊的
HEAD
指针指向
footer
分支。
footer
分支与
master
分支位于同一 commit 上。
添加社交链接
现在我们已经位于新分支上,我们向页面脚注中添加一些社交链接。我添加了以下内容:
<footer>
<!-- start of new content -->
<section>
<h3 class="visuallyhidden">Social Links</h3>
<a class="social-link" href="https://twitter.com/udacity">
<img src="img/social-twitter.png" alt="Twitter">
</a>
<a class="social-link" href="https://www.instagram.com/udacity/">
<img src="img/social-instagram.png" alt="Instagram">
</a>
<a class="social-link" href="https://plus.google.com/+Udacity">
<img src="img/social-google.png" alt="Google Plus">
</a>
</section>
<!-- end of new content -->
</footer>
你也可以添加你自己的社交帐户链接。
Task Description:
现在保存文件并提交 commit。(我使用了 commit 消息"Add links to social media",当然你也可以想出更好的消息)
Task Feedback:
很棒! 👏
同时查看所有分支
我们已经做出了所有需要做出的更改!很棒!
我们已经在三个不同的分支上进行了多项更改。我们在
git log
输出结果中看不到其他分支,触发切换到某个分支。如果能在
git log
输出结果中看到所有分支,是不是很棒?
你到现在为止已经知道,
git log
命令非常强大,可以显示此信息。我们将使用新的
--graph
和
--all
选项:
$ git log --oneline --decorate --graph --all
--graph
选项将条目和行添加到输出的最左侧。显示了实际的分支。
--all
选项会显示仓库中的所有分支。
运行此命令将显示仓库中的所有分支和 commit:
终端显示了
git log --oneline --graph --decorate --all
的输出结果。它会显示仓库中的所有分支,以及所有 commit。
## 更改小结
我们做出了以下更改:
- 我们在 master 分支上向页面添加了默认颜色
-
我们创建了 sidebar 分支并为侧栏添加了代码
-
我们在 master 分支上更改了页面的标题
-
我们在 sidebar 分支上向侧栏添加了更多内容
-
我们创建了 footer 分支并向脚注中添加了社交链接
这些更改都发生在不同的分支上。让我们用 git 合并所有这些更改吧。将分支组合到一起称为 合并 (merge)。